package com.jc.platform.songjiajia.service.base;

import com.jc.platform.common.model.QueryParam;
import com.jc.platform.common.result.PageInfo;
import com.jc.platform.common.result.ResultModel;
import org.springframework.transaction.annotation.Transactional;
import com.jc.platform.songjiajia.vo.PurchaseContractFileInfoVO;
import com.jc.platform.songjiajia.group.Update;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import javax.validation.groups.Default;
import java.util.*;


/**
 * ClassName IBasePurchaseContractFileInfoService.java
 * Description 采购拓展表
 *
 * @author 集团管理员
 * @date 2022/01/22
 */
@Validated
public interface IBasePurchaseContractFileInfoService
{


	/**
	 * 查询一对一扩展表数据
	 *
	 * @param PurchaseContractId ID
	 * @return 对象vo
	 */
	PurchaseContractFileInfoVO getByPurchaseContractIdExtend(Long PurchaseContractId);

	/**
	 * 删除一对一扩展数据
	 *
	 * @param PurchaseContractId ID
	 * @return Boolean
	 */
	Boolean delByPurchaseContractId(Long PurchaseContractId);




	/**
	 * 保存
	 *
	 * @param purchaseContractFileInfo 实体
	 * @return 对象vo
	 */
	@Transactional(rollbackFor = Exception.class)
	ResultModel<PurchaseContractFileInfoVO> insert(@Valid PurchaseContractFileInfoVO purchaseContractFileInfo);

	/**
	 * 修改
	 *
	 * @param purchaseContractFileInfo 实体
	 * @return 对象vo
	 */
	@Transactional(rollbackFor = Exception.class)
	ResultModel<PurchaseContractFileInfoVO> update(PurchaseContractFileInfoVO purchaseContractFileInfo);



	/**
	 * 删除
	 *
	 * @param id 主键
	 * @return 是否成功
	 */
	@Transactional(rollbackFor = Exception.class)
	ResultModel<Boolean> delete(Long id);

	/**
	 * 批量删除
	 *
	 * @param ids 主键
	 * @return 是否成功
	 */
	@Transactional(rollbackFor = Exception.class)
	ResultModel<Boolean> deleteBatch(List<Long> ids);

	

	/**
	 * 校验属性是否存在，存在返回false，不存在返回true
	 *
	 * @param id       主键
	 * @param property 属性名称
	 * @param value    属性值
	 * @return 检查结果
	 */
	@Transactional(rollbackFor = Exception.class, readOnly = true)
	Boolean checkNotExists(Long id, String property, String value);

	/**
	 * 查询对象
	 *
	 * @param id 主键
	 * @return 对象
	 */
	ResultModel<PurchaseContractFileInfoVO> get(Long id);

	/**
	 * 查询对象集合
	 *
	 * @param queryParam 查询参数
	 * @return 对象集合
	 */
	ResultModel<List<PurchaseContractFileInfoVO>> find(QueryParam queryParam);

	/**
	 * 分页查询
	 *
	 * @param queryParam 查询参数
	 * @return 分页对象
	 */
	ResultModel<PageInfo<PurchaseContractFileInfoVO>> finds(QueryParam queryParam);

	/**
	 * 查询条数
	 * @param queryParam
	 * @return 数量
	 */
	ResultModel<Integer> count(QueryParam queryParam);







}
